This invention relates generally to computer memory, and more specifically to adaptive endurance coding of non-volatile memories.
Phase-change memories (PCMs) and flash memories are examples of non-volatile memories with limited endurance (also referred to as a “limited life”). Such memories have limited endurance in the sense that after undergoing a number of writing cycles (RESET cycles for PCM, program/erase cycles for flash memory), the memory cells wear out and can no longer reliably store information.
A technique called endurance coding, where patterns are written to memory such that cell wear is reduced, may be utilized to lengthen the life of limited life memories. A shortcoming of current endurance coding schemes is that they induce an expansion of the data and do not feature any mechanism to adapt the parameters of endurance coding to the data compressibility and to the memory page length. This implies that either a different page length has to be used for each data word, or endurance increase has to be sacrificed.
Other related implementations include methods for writing on write-once and write-efficient memories, which allow an increased amount of data to be stored per memory write and/or over the lifetime of the memory. Again, a shortcoming of these methods is that they do not allow endurance codes to be adaptively selected for different data.